package leetcode_600;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 *@author 周杨
 *KdiffPairsInAnArray_532 判断一个数组里 有没有两个元素的差值等于k 判断有多少这样的对
 *describe:用map做 AC 37%
 *2018年9月11日 上午11:34:49
 */
public class KdiffPairsInAnArray_532 {
	 public int findPairs(int[] nums, int k) {
	        if(nums.length<2)
	        	return 0;
	        if(k<0)
	        	return 0;
	        if(k==0) {//找重复的
	        	int res=0;
	        	Map<Integer,Boolean> map=new HashMap<Integer,Boolean>();
	        	for(int num:nums) {
	        		Boolean flag=map.get(num);
	        		if(flag==null)
	        			map.put(num, false);
	        		else {
	        			if(!flag) {//只出现一次
	        				++res;
	        				map.put(num, true);
	        			}
	        		}
	        	}
	        	return res;
	        }
	        int res=0;
	        Set<Integer> set=new HashSet<Integer>();
	        for(int num:nums) {//非重复入set
	        	set.add(num);
	        }
	        for(Integer i:set) {
	        	if(set.contains(i+k))
	        		++res;
	        }
	        return res;
	 }
}
